package utils;

import interfaz.IEntidad;

import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import entidad.Aula;
import entidad.CalificacionDetalle;

import entidad.Ciclo;
import entidad.Curso;
import entidad.Empleado;
import entidad.Estudiante;
import entidad.Horario;
import entidad.Role;

public class Utilidad {
	private static Utilidad instancia = null;;

	public static Utilidad getInstancia() {
		if (instancia == null) {
			instancia = new Utilidad();
		}
		return instancia;
	}

	public boolean validar(Object... objeto) {
		for (Object obj : objeto) {
			if (obj instanceof JTextField) {
				JTextField text = (JTextField) obj;
				if (text.getText().trim().equals("")
						|| text.getText().trim().equals("-   -")) {
					return false;
				}
			} else if (obj instanceof JTextArea) {
				JTextArea txtArea = (JTextArea) obj;
				if (txtArea.getText().trim().equals("")) {
					return false;

				}
			} else if (obj instanceof JComboBox) {
				JComboBox comboBox = (JComboBox) obj;
				if (comboBox.getSelectedIndex() == 0) {

					return false;
				}
			}

		}
		return true;
	}

	public void formatearCampos(Object... objeto) {
		for (Object obj : objeto) {
			if (obj instanceof JTextField) {
				JTextField textField = (JTextField) obj;
				textField.setBorder(BorderFactory.createLineBorder(Color.BLACK,
						1));

			} else if (obj instanceof JTextArea) {
				JTextArea txtArea = (JTextArea) obj;
				txtArea.setBorder(BorderFactory
						.createLineBorder(Color.BLACK, 1));
			}
		}

	}

	public void limpiar(Object... objeto) {
		for (Object obj : objeto) {
			if (obj instanceof JTextField) {
				JTextField text = (JTextField) obj;
				text.setText("");
			} else if (obj instanceof JTextArea) {
				JTextArea txtArea = (JTextArea) obj;
				txtArea.setText("");
			} else if (obj instanceof ButtonGroup) {

				ButtonGroup rbtn = (ButtonGroup) obj;
				rbtn.clearSelection();
			} else if (obj instanceof JComboBox) {
				JComboBox comboBox = (JComboBox) obj;
				comboBox.setSelectedIndex(0);
			}
		}
	}

	public IEntidad convertirAMayuscula(IEntidad entidad) {

		if (entidad instanceof Empleado) {
			Empleado empleado = (Empleado) entidad;
			empleado.setNombre(empleado.getNombre().toUpperCase());
			empleado.setApellido(empleado.getApellido().toUpperCase());
			empleado.setSexo(empleado.getSexo().toUpperCase());
			empleado.setDireccion(empleado.getDireccion().toUpperCase());
			empleado.setUsuario(empleado.getUsuario().toUpperCase());
			empleado.setClave(empleado.getClave().toUpperCase());
			empleado.setEstatus(empleado.getEstatus().toUpperCase());
			if (empleado.getEmail() != null) {
				empleado.setEmail(empleado.getEmail().toUpperCase());
			}
			return empleado;
		} else if (entidad instanceof Estudiante) {
			Estudiante estudiante = (Estudiante) entidad;
			estudiante.setNombre(estudiante.getNombre().toUpperCase());
			estudiante.setApellido(estudiante.getApellido().toUpperCase());
			estudiante.setSexo(estudiante.getSexo().toUpperCase());
			estudiante.setDireccion(estudiante.getDireccion().toUpperCase());
			estudiante
					.setNombreTutor(estudiante.getNombreTutor().toUpperCase());
			estudiante.setApellidoTutor(estudiante.getApellidoTutor()
					.toUpperCase());
			estudiante.setEstatus(estudiante.getEstatus().toUpperCase());

			if (estudiante.getEmail() != null) {
				estudiante.setEmail(estudiante.getEmail().toUpperCase());
			}
			return estudiante;
		} else if (entidad instanceof Aula) {
			Aula aula = (Aula) entidad;
			aula.setNombre(aula.getNombre().toUpperCase());
			aula.setDescripcion(aula.getDescripcion().toUpperCase());

			return aula;
		} else if (entidad instanceof Role) {
			Role role = (Role) entidad;
			role.setNombre(role.getNombre().toUpperCase());
			role.setDescripcion(role.getDescripcion().toUpperCase());

			return role;
		} else if (entidad instanceof CalificacionDetalle) {
			CalificacionDetalle calificacionDetalle = (CalificacionDetalle) entidad;
			calificacionDetalle.setDescripcion(calificacionDetalle
					.getDescripcion().toUpperCase());
			calificacionDetalle.setEstatus(calificacionDetalle.getEstatus()
					.toUpperCase());

			return calificacionDetalle;
		} else if (entidad instanceof Ciclo) {
			Ciclo ciclo = (Ciclo) entidad;
			ciclo.setDescripcion(ciclo.getDescripcion().toUpperCase());
			ciclo.setStatus(ciclo.getStatus().toUpperCase());

			return ciclo;
		} else if (entidad instanceof Curso) {
			Curso curso = (Curso) entidad;
			curso.setNombre(curso.getNombre().toUpperCase());
			curso.setDescripcion(curso.getDescripcion().toUpperCase());
			curso.setEstatus(curso.getEstatus().toUpperCase());

			return curso;
		} else if (entidad instanceof Horario) {
			Horario horario = (Horario) entidad;
			horario.setDia(horario.getDia().toUpperCase());

			return horario;
		}

		return null;
	}
}
